#include "can_msg.h"
CAN_MsgCB g_CAN_MsgCB = {0};

//全局变量
Updata_Id_t g_Updata_Id_0X595_t = {0};
unsigned int Updata_IdLostTime; //CAN报文丢失时间计时
unsigned int Updata_IdOKCnt;    //确认个数
CAN_RXMSG g_canRxMsgBuf[] = 
{
    {0x595,(unsigned char*)g_Updata_Id_0X595_t.data,&Updata_IdLostTime,&Updata_IdOKCnt}
};
//宏定义
#define CAN_RX_NUM  GETSIZE(g_canRxMsgBuf)

/// @brief CAN数据入队
/// @param candata 
/// @param canCB 
void  CAN_RxDataIn(CanRxMsg candata,CAN_MsgCB *canCB)
{
    uint8_t i;
    if((canCB->head + 1) % CAN_FIFO_MAX_LEN !=  canCB->back)//队列位满
    {
        canCB->canRxData->DLC = candata.DLC;
        canCB->canRxData->StdId = candata.StdId;
        for(i = 0 ; i < canCB->canRxData->DLC ;i++)
        {
            canCB->canRxData->Data[i] = candata.Data[i];
        }
        canCB->head = (canCB->head + 1 )% CAN_FIFO_MAX_LEN;//
    }
}

void  CAN_RxDataOut(CAN_MsgCB *canCB)
{
    if(canCB->head != canCB->back)
    {
        canCB->back = (canCB->back + 1) % CAN_FIFO_MAX_LEN;
    }
}







